package opf5.persistencia.proxies;

import opf5.entities.calificaciones.CalificacionConcreta;
import opf5.entities.dominio.Calificacion;
import opf5.entities.dominio.Jugador;
import opf5.entities.dominio.Partido;
import opf5.entities.repositorios.RepositorioJugadoresPersistente;
import opf5.entities.repositorios.RepositorioPartidosPersistente;
import opf5.persistencia.OPF5DBGateway;

public class CalificacionDBProxy implements Calificacion {
	private CalificacionConcreta calificacionConcreta;
	private String nombreJugador;
	private int idCalificacion;

	public CalificacionDBProxy() {
		this.calificacionConcreta = new CalificacionConcreta(null, null, 0, "");
	}
	
	public int getIdCalificacion() {
		return idCalificacion;
	}

	public void setIdCalificacion(int idCalificacion) {
		this.idCalificacion = idCalificacion;
	}

	public CalificacionDBProxy(CalificacionConcreta calificacion) {
		this.calificacionConcreta = calificacion;
	}

	@Override
	public boolean esSimilarA(Calificacion calificacion) {
		return calificacionConcreta.esSimilarA(calificacion);
	}

	@Override
	public Jugador getJugadorCalificador() {
		return calificacionConcreta.getJugadorCalificador();
	}

	@Override
	public Partido getPartido() {
		return calificacionConcreta.getPartido();
	}

	@Override
	public int getNota() {
		return calificacionConcreta.getNota();
	}

	@Override
	public String getComentario() {
		return calificacionConcreta.getComentario();
	}
	
	public String getNombreJugadorCalificador() {
		return this.calificacionConcreta.getJugadorCalificador().getNombre();
	}
	
	public void setNombreJugadorCalificador(String nombre) {
		this.calificacionConcreta.setJugadorCalificador(new RepositorioJugadoresPersistente().getJugadorPorId(nombre));
	}

	public int getIdPartido() {
		PartidoDBProxy partido = (PartidoDBProxy) this.getPartido();
		return partido.getId();
	}
	
	public void setIdPartido(int id) {
		Partido parido = OPF5DBGateway.getPartido(id);
		this.calificacionConcreta.setPartido(parido);;
	}

	
	public String getNombreJugador() {
		return this.nombreJugador;
	}
	
	public void setNombreJugador(String nombre) {
		this.nombreJugador = nombre;
	}

	public void setNota(int nota) {
		this.calificacionConcreta.setNota(nota);
	}

	public void setComentario(String comentario) {
		this.calificacionConcreta.setComentario(comentario);
	}

	@Override
	public void setJugadorCalificador(Jugador j) {
		this.calificacionConcreta.setJugadorCalificador(j);
	}

	@Override
	public void setPartido(Partido p) {
		this.calificacionConcreta.setPartido(p);
	}

}
